package cn.yeziji.file.service;

import cn.yeziji.file.vo.FileDataVO;
import cn.yeziji.forum.common.ForumPageResult;
import cn.yeziji.forum.dto.file.ForumFilePagingDTO;
import cn.yeziji.forum.entity.ForumFileEntity;
import cn.yeziji.forum.basic.file.WebUploaderFileEntity;
import cn.yeziji.forum.entity.ForumUserEntity;

import java.util.List;

/**
 * 与论坛服务交互接口
 *
 * @author gzkemays
 * @since 2022/5/16 14:50
 */
public interface InteractionService {
  /**
   * 根据 token 获取 userEntity
   *
   * @return {@link ForumUserEntity}
   */
  ForumUserEntity getUserEntityByToken();

  /**
   * 检查 token
   *
   * @param token token 令牌
   * @return 是否存在
   */
  boolean checkToken(String token);

  /**
   * 获取进度
   *
   * @param md5 文件 md5
   * @return 上传进度
   */
  Integer getProcess(String md5);

  /**
   * 保存数据
   *
   * @param scope 作用区域
   * @param target 指定目标
   * @param source 来源
   */
  void save(WebUploaderFileEntity wfe);

  /**
   * 根据 token 获取 username
   *
   * @return username
   */
  String getUsernameByToken();

  List<ForumFileEntity> getFileEntitiesBySource();

  List<ForumFileEntity> getFileEntitiesByScope(String scope);

  ForumPageResult<FileDataVO> getFileEntitiesPage(ForumFilePagingDTO pagingDTO);

  void del(String scope);
}
